package com.yy.weixinpay.task;

import com.yy.weixinpay.entity.OrderInfo;
import com.yy.weixinpay.enums.PayType;
import com.yy.weixinpay.service.OrderInfoService;
import com.yy.weixinpay.service.WxPayService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.List;

@Component
@Slf4j
public class WxPayTask {
    @Resource
    private OrderInfoService orderInfoService;
    @Resource
    private WxPayService wxPayService;
    /**
     * 秒  分钟   小时  天  月  周
     * 天和周不能同时执行，否则报错，指定其中一个，另外一个就要用问好表示了
     */
    //创建定时查单功能，30s执行一次，查询创建时间查过五分钟未支付的订单，是否出于支付状态,
    @Scheduled(cron = " 0/30 * * * * ?")
    public void wxPayTask() {
        log.info("定时查单功能,30秒执行一次定时查单任务");
        List<OrderInfo> orderInfoList = orderInfoService.getNoPayOrderByDuration(5, PayType.WXPAY.getType());
        orderInfoList.forEach(orderInfo -> {
            //调用订单查询接口，查询订单状态
            //查看超时订单是已支付没有收到回调通知，还是未支付
            wxPayService.checkOrderStatus(orderInfo.getOrderNo());
        });
    }
}
